package com.Test.Demo;
import java.util.Date;
import java.sql.*;   // 按需求导入包，需要注意不可以让多个包存在同一个名称相同的 类，
// 编译器无法自动获取你所需要的是哪一个, 如果非要用的话，就需要使用 单导入包，就不会出错了，
// 按需求导入包，不要使用过多了。


/*protected class Demo3 {
    // protected 不可以修饰 类
}*/


// 多层继承
/*我们并不希望类之间的继承层次太复杂，一般我们不希望超过 三
层的继承关系，如果继承层次太多，就需要考虑对代码进行重构了，
* */
/*
final class Animal {
    */
/*被 final 修饰的类，不可以被继承
     final int a = 10 ;// 常量 只能被初始化一次，接下来就不能再修改了
     ，一般被 final 修饰的常量，同样被 static 静态化的
    * *//*

}
class Cat extends Animal {

}
class ChineseGardenCat extends Cat {

}
*/


/*


// 类的组合
public class Studens {
    // 业务，
}

public class Teacher {
    // 业务
}


public class School {
    public Studens studens ;
    public Teacher teacher ; // 两个类的组合

    public Studens[] studens1;
    public Teacher[] teachers2; // 两个类的组合的 数组

    */
/*组合的表示 has - a 语义
    组合并没有涉及到特殊的语法，（诸如 extends 这样的关键字
    仅仅是将一个类的实例化作为另外一个类的字段，或数组
    这是我们设计类的一种常用的方式之一，
    * *//*

}

*/

public class Test2 {


    protected boolean num;
    // protected 的权限探究
    /*protected 的权限范围
    1. 同一个包下的同一个类 
    2. 同一个包下的不同类
    3.在不同包中的不同类，在继承关系下，才可以访问
       被 protected 修饰的方法和字段，在不同包下，只有子类可以访问
    * */
    String name = "HelloWorld";

    protected String name2 = "helloworld";
    
    
    
    
    
    
    
    // default 默认权限的探究
    /* default 默认权限的范围
    1.在同一个包下的同一个类
    2.在同一个包下的不同类 
    * */
    int a = 99;  // 默认权限
    int b = 999;







    public static void main1(String args[]) {
        Date date = new Date();

    }
}
